(display "\n========================================\n")
(define (cons x y)
    (lambda (m) (m x y)))

(define (car z)
    (z (lambda (p q) p)))

; (car (cons 1 2))
; 替换 cons
; (car (lambda (m) (m 1 2)))
; 展开 car
; ((lambda (z) (z (lambda (p q) p)))
;     (lambda (m) (m 1 2)))
; 代换 z
; ((lambda (m) (m 1 2))
;     (lambda (p p) p))
; 代换 m
; ((lambda (p q) p)
;     (1 2))

; 1

; 程序验证
(display (car (cons 1 2)))
(newline)

(define (cdr z)
    (z (lambda (p q) q)))

; (cdr (cons 1 2))
; (cdr (lambda (m) (m 1 2)))
; ((lambda (z) (z (lambda (p q) q)))
;     (lambda (m) (m 1 2)))
; ((lambda (m) (m 1 2))
;     (lambda (p q) q))
; ((lambda (p q) q)
;     (1 2))
; 2

; 程序验证
(display (cdr (cons 1 2)))
(display "\n========================================\n")
